/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.fatecpg.zanotti.acessobanco;

import br.com.fatecpg.zanotti.modelo.Funcionario;
import br.com.fatecpg.zanotti.modelo.Usuario;
import javax.swing.*;
import java.sql.*;
import java.util.Vector;
import javax.swing.table.DefaultTableModel;

/**
 * Classe responsável por realizar todas consultas relacionadas a Tabela da janela de Funcionario.
 * @author F.L. Zanotti
 */
public class conTableUsuario {
/**
 * Realiza uma consulta Total pela Tabela de Funcionario
 * @param testeTabela JTable
 * @return
 */
    public JTable ConsultaTabela(JTable testeTabela) {

        try {
            Connection con = AbreConexao.getConexao();

            String query = "SELECT CDCARGO, CDFUNCIONARIO, NMFUNCIONARIO, NMCARGO," +
                    " CDLOJA from FUNCIONARIO join CARGO USING(cdcargo)" +
                    "order by 2";

            PreparedStatement pst = con.prepareStatement(query);

            ResultSet rs = pst.executeQuery();
            DefaultTableModel modelo = (DefaultTableModel) testeTabela.getModel();
            modelo.setNumRows(0);

            while (rs.next()) {
                String CDCARGO = rs.getString("CDCARGO");
                String CDFUNCIONARIO = rs.getString("CDFUNCIONARIO");
                String NMFUNCIONARIO = rs.getString("NMFUNCIONARIO");
                String NMCARGO = rs.getString("NMCARGO");
                String CDLOJA = rs.getString("CDLOJA");

                CDCARGO = CDCARGO.trim();
                CDFUNCIONARIO = CDFUNCIONARIO.trim();
                NMFUNCIONARIO = NMFUNCIONARIO.trim();
                NMCARGO = NMCARGO.trim();
                CDLOJA = CDLOJA.trim();

                Vector teste = new Vector();
                teste.addElement(CDFUNCIONARIO);
                teste.addElement(NMFUNCIONARIO);
                teste.addElement(CDCARGO);
                teste.addElement(NMCARGO);
                teste.addElement(CDLOJA);

                modelo.addRow(teste);


            }
            System.out.println(testeTabela.getRowCount());
            return testeTabela;
        } catch (SQLException e) {
            System.out.println(e);
        }

        return null;
    }
/**
 * Realiza uma consulta pelo número máximo de funcionario +1
 * @return
 */
    public String ConsultaCDFUNCIONARIO() {

        try {
            Connection con = AbreConexao.getConexao();

            String query = "SELECT MAX(CDFUNCIONARIO)+1 as col from FUNCIONARIO";

            PreparedStatement pst = con.prepareStatement(query);

            ResultSet rs = pst.executeQuery();
            String CDFUNCIONARIO = "";
            while (rs.next()) {
                CDFUNCIONARIO = rs.getString("col");

                CDFUNCIONARIO = CDFUNCIONARIO.trim();

            }

            return CDFUNCIONARIO;
        } catch (SQLException e) {
            System.out.println(e);
        }

        return null;
    }
/**
 * Realiza uma consulta pelo objeto Funcionario a partir de cdfuncionario
 * @param s cdfuncionario
 * @return Funcionario
 */
    public Funcionario ConsultaFuncionarioPorLinha(String s) {
        try {
            Connection con = AbreConexao.getConexao();

            PreparedStatement pst = con.prepareStatement("SELECT cdfuncionario, cdloja, " +
                    "cdcargo, nmfuncionario, cpffuncionario, rgfuncionario, cnhfuncionario, " +
                    "TO_CHAR(dtnascimento, 'DD/MM/YY') as dtnascimento, TO_CHAR(dtadmissao, 'DD/MM/YY') as dtadmissao, cdtelefone from FUNCIONARIO" +
                    " WHERE cdfuncionario = " + s + "");

            ResultSet rs = pst.executeQuery();

            while (rs.next()) {

                String CDFUNCIONARIO = rs.getString("CDFUNCIONARIO");
                String CDLOJA = rs.getString("CDLOJA");
                String CDCARGO = rs.getString("CDCARGO");
                String NMFUNCIONARIO = rs.getString("NMFUNCIONARIO");
                String CPFFUNCIONARIO = rs.getString("CPFFUNCIONARIO");
                String RGFUNCIONARIO = rs.getString("RGFUNCIONARIO");
                String CNHFUNCIONARIO = rs.getString("CNHFUNCIONARIO");
                String DTNASCIMENTO = rs.getString("DTNASCIMENTO");
                String DTADMISSAO = rs.getString("DTADMISSAO");
                String CDTELEFONE = rs.getString("CDTELEFONE");


                Funcionario.getInstancia().setCDCARGO(CDCARGO);
                Funcionario.getInstancia().setCDFUNCIONARIO(CDFUNCIONARIO);
                Funcionario.getInstancia().setCDLOJA(CDLOJA);
                Funcionario.getInstancia().setCDTELEFONE(CDTELEFONE);
                Funcionario.getInstancia().setCNHFUNCIONARIO(CNHFUNCIONARIO);
                Funcionario.getInstancia().setCPFFUNCIONARIO(CPFFUNCIONARIO);
                Funcionario.getInstancia().setDTADMISSAO(DTADMISSAO);
                Funcionario.getInstancia().setDTNASCIMENTO(DTNASCIMENTO);
                Funcionario.getInstancia().setNMFUNCIONARIO(NMFUNCIONARIO);
                Funcionario.getInstancia().setRGFUNCIONARIO(RGFUNCIONARIO);


            }

            return Funcionario.getInstancia();

        } catch (SQLException e) {
            System.out.println(e);
        }

        return null;
    }
/**
 * Realiza uma consulta de Usuario, inserindo o resultado em uma instância Singleton de Usuario.
 * @param s cdfuncionario
 * @return boolean
 */
        public boolean ConsultaUsuarioPorLinha(String s) {
        try {
            Connection con = AbreConexao.getConexao();

            PreparedStatement pst = con.prepareStatement("SELECT cdfuncionario, cdloja, " +
                    "cdcargo, cdsenha from Usuario" +
                    " WHERE cdfuncionario = " + s + "");

            ResultSet rs = pst.executeQuery();

            String cdfuncionario = null;

            while (rs.next()) {

                cdfuncionario = rs.getString("CDFUNCIONARIO");
                String CDSENHA = rs.getString("CDSENHA");

                Usuario.getInstancia().setCDSENHA(CDSENHA);
            }

            if(cdfuncionario!=null) return true;
            else return false;

        } catch (SQLException e) {
            System.out.println(e);
        }

        return false;
    }
/**
 * Realiza uma consulta pelo número maximo de código do funcionario.
 * @return int
 */
                public int ConsultaCdfuncMax() {
        try {
            Connection con = AbreConexao.getConexao();

            PreparedStatement pst = con.prepareStatement("SELECT MAX(cdfuncionario) as CDFUNCIONARIO from Funcionario");

            ResultSet rs = pst.executeQuery();

            int cdfuncionario = 0;

            while (rs.next()) {
                cdfuncionario = rs.getInt("CDFUNCIONARIO");
            }

return cdfuncionario;

        } catch (SQLException e) {
            System.out.println(e);
        }
return -1;
    }
}
